/**
 * Copyright (C), 2015-2018, 真格邦软件科技有限公司
 * 文件名: TranstionActionMesssageServiceImpl
 * 作者: lsyzx【892366102@qq.com】
 * 创建时间: 2018/12/4 00:13
 * 描述: TODO
 * 历史修改:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.zx.sys.api.impl;

import cn.hutool.db.Db;
import cn.hutool.db.Entity;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.dubbo.config.annotation.Service;
import com.zx.sys.api.SysApiService;
import com.zx.sys.entity.ZgbTable;
import lombok.extern.slf4j.Slf4j;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * 作者: lsyzx【892366102@qq.com】
 * 创建时间: 2018/12/4 00:13
 * 描述: 系统服务实现
 * 历史修改:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
@Slf4j
@Service(version = "1.0.0", interfaceClass = SysApiService.class)
public class SysApiServiceImpl implements SysApiService {

    /**
     * 查询数据库表
     *
     * @param db_url
     * @param user_name
     * @param password
     * @param table_schema
     * @return
     */
    @Override
    public List<ZgbTable> getZgbTables(String db_url, String user_name, String password, String table_schema) {
        List<ZgbTable> list = new ArrayList<ZgbTable>();
        DruidDataSource ds2 = new DruidDataSource();
        ds2.setUrl(db_url);
        ds2.setUsername(user_name);
        ds2.setPassword(password);
        try {
            List<Entity> tables = Db.use(ds2).query("SELECT table_name,table_comment  FROM information_schema.TABLES WHERE table_schema='" + table_schema + "' and table_type='BASE TABLE'");
            tables.forEach(item -> {
                ZgbTable zgbTable = new ZgbTable();
                zgbTable.setTable_name(item.getStr("table_name"));
                zgbTable.setTable_comment(item.getStr("table_comment"));
                list.add(zgbTable);
            });
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }

}
